package com.anita.member.domain.service;

import io.jsonwebtoken.Claims;

/**
 * JWT服务接口
 * 抽象JWT相关操作，避免应用层直接依赖具体实现
 */
public interface JwtService {
    
    /**
     * 用户类型枚举
     */
    enum UserType {
        ADMIN, MEMBER
    }
    
    /**
     * 生成访问令牌
     */
    String generateAccessToken(UserType userType, Long userId);
    
    /**
     * 生成刷新令牌
     */
    String generateRefreshToken(UserType userType, Long userId);
    
    /**
     * 验证访问令牌
     */
    boolean validateAccessToken(String token);
    
    /**
     * 验证刷新令牌
     */
    boolean validateRefreshToken(String token);
    
    /**
     * 解析访问令牌
     */
    Claims parseAccessToken(String token);
    
    /**
     * 解析刷新令牌
     */
    Claims parseRefreshToken(String token);
    
    /**
     * 从Claims中获取用户ID
     */
    Long getUserIdFromClaims(Claims claims);
    
    /**
     * 从Claims中获取用户类型
     */
    UserType getUserTypeFromClaims(Claims claims);
}